Im ersten Schritt der Reconnaissance werden grundlegende Informationen über das Zielsystem gesammelt. Dies hilft uns, ein besseres Verständnis der Umgebung zu erlangen und potenzielle Angriffsvektoren zu identifizieren. Die gesammelten Informationen dienen als Grundlage für die nachfolgenden Schritte.
Nachdem die grundlegenden Informationen gesammelt wurden, wird ein Nmap-Scan durchgeführt, um offene Ports und Dienste auf dem Zielsystem zu identifizieren. Die Ergebnisse des Scans geben Aufschluss darüber, welche Dienste auf dem System laufen und welche potenziellen Schwachstellen vorhanden sein könnten.
Der Nmap-Scan hat ergeben, dass Port 80 (HTTP) geöffnet ist und Apache httpd 2.4.38 verwendet wird. Dies deutet darauf hin, dass eine Webanwendung auf dem Zielsystem läuft. Der nächste Schritt ist die Durchführung einer Web Enumeration, um weitere Informationen über die Webanwendung zu sammeln.
Nikto wird verwendet, um die Webanwendung auf bekannte Schwachstellen zu scannen. Nikto ist ein Open-Source-Webserver-Scanner, der auf gefährliche Dateien, veraltete Software und andere Sicherheitsprobleme prüft.
Nikto hat verschiedene interessante Ergebnisse geliefert, darunter fehlende Sicherheitsheader, eine veraltete Apache-Version und das Vorhandensein potenziell sensibler Dateien wie `/config.php`. Directory Indexing ist in `/css/` und `/includes/` aktiviert, was das Auffinden von Dateien erleichtert.
Gobuster wird verwendet, um weitere Verzeichnisse und Dateien auf dem Webserver zu entdecken. Gobuster ist ein Brute-Force-Tool, das eine Wortliste verwendet, um URLs zu erraten.
Gobuster hat mehrere interessante Dateien und Verzeichnisse gefunden, darunter `index.php`, `search.php`, `welcome.php`, `results.php`, `display.php`, `config.php` und `manage.php`. Besonders interessant ist `config.php`, da diese Datei möglicherweise sensible Informationen wie Datenbank-Zugangsdaten enthält. Die Weiterleitung von `welcome.php`, `logout.php` und `session.php` zu `manage.php` deutet darauf hin, dass `manage.php` eine zentrale Verwaltungsseite ist.
Da `manage.php` eine zentrale Verwaltungsseite zu sein scheint, wird diese Seite mit Nikto erneut auf Schwachstellen gescannt.
Der erneute Nikto-Scan auf `/manage.php` hat weitere interessante Ergebnisse geliefert, darunter potenziell interessante Backup-Dateien (`.tar.bz2`, `.tar`, `.pem`, `.tgz`) und Hinweise auf mögliche Sicherheitslücken in Bezug auf FrontPage-Authoring-Zugriff.
Um initialen Zugriff auf das System zu erhalten, werden verschiedene Informationen gesammelt und analysiert. Zuerst werden Benutzernamen und E-Mail-Adressen aus der Webanwendung extrahiert, um eine Liste potenzieller Anmeldedaten zu erstellen.
Die Ausgabe zeigt eine Liste von Namen, die als potenzielle Benutzernamen verwendet werden können.
Die Ausgabe zeigt eine Liste von E-Mail-Adressen, die verwendet werden können, um Benutzernamen zu erraten oder weitere Informationen über die Benutzer zu sammeln.
Die Ausgabe zeigt, dass der Benutzer bereits als `admin` angemeldet ist. Die `PHPSESSID` wird angezeigt, was auf die Verwendung von Cookies für die Sitzungsverwaltung hinweist.
Es wird versucht, über eine lokale Datei-Inclusion (LFI) auf sensible Dateien zuzugreifen. Dies geschieht durch Manipulation des `file`-Parameters in der `manage.php`-Datei.
Der Zugriff auf `/etc/passwd` war erfolgreich, was eine Liste aller Benutzer auf dem System liefert. Dies ist ein wichtiger Schritt, um potenzielle Angriffspunkte zu identifizieren.
Der Zugriff auf `/etc/knockd.conf` war ebenfalls erfolgreich. Diese Datei enthält die Konfiguration für `knockd`, einen Port-Knocking-Daemon. Die Konfiguration zeigt, dass eine bestimmte Sequenz von Port-Knocks erforderlich ist, um den SSH-Port (22) zu öffnen. Dies ist eine wichtige Information für den weiteren Angriff.
Da der SSH-Port durch `knockd` geschützt ist, wird zunächst geprüft, ob der Port tatsächlich geschlossen ist.
Der Nmap-Scan bestätigt, dass der SSH-Port gefiltert ist.
Um den SSH-Port zu öffnen, wird die in `/etc/knockd.conf` gefundene Port-Knocking-Sequenz verwendet.
Nachdem die Port-Knocking-Sequenz gesendet wurde, wird erneut geprüft, ob der SSH-Port geöffnet ist.
Fantastisch! Der SSH-Port ist jetzt geöffnet. Der nächste Schritt ist der Versuch, sich über SSH anzumelden.
Nachdem der SSH-Port geöffnet wurde, wird versucht, über eine SQL-Injection Anmeldedaten zu erhalten.
Es wird versucht, eine SQL-Injection in der `results.php`-Datei zu nutzen. Dies geschieht durch Manipulation des Suchparameters.
Die SQL-Injection war erfolgreich! Es wurden Benutzernamen und Passwörter aus der Datenbank extrahiert. Nun haben wir unser Ziel erreicht und können mit diesen Anmeldedaten versuchen, uns über SSH anzumelden.
Die extrahierten Benutzernamen werden in der Datei `users` gespeichert und die Passwörter in der Datei `passi`.
Hydra wird verwendet, um einen Brute-Force-Angriff auf den SSH-Dienst durchzuführen. Hydra ist ein schnelles Netzwerk-Login-Hacking-Tool, das viele verschiedene Protokolle unterstützt, darunter SSH.
Der Brute-Force-Angriff war erfolgreich! Es wurden zwei gültige Anmeldedaten gefunden: `chandlerb:UrAG0D!` und `joeyt:Passw0rd`.
Nachdem gültige Anmeldedaten gefunden wurden, wird versucht, sich mit dem Benutzer `chandlerb` über SSH anzumelden.
Die Anmeldung als `chandlerb` war erfolgreich!
Nach der Anmeldung wird nach SUID-Dateien gesucht, die möglicherweise zur Privilege Escalation ausgenutzt werden können.
Es werden auch Anmeldedaten für `joeyt` getestet.
Die Anmeldung als `joeyt` war ebenfalls erfolgreich, aber der Benutzer darf `sudo` nicht verwenden.
Es wird versucht, sich als `janitor` über SSH anzumelden.
Die Anmeldung als `janitor` war erfolgreich!
Im Home-Verzeichnis des Benutzers `janitor` wurde ein interessantes Verzeichnis `.secrets-for-putin` gefunden, das eine Datei `passwords-found-on-post-it-notes.txt` enthält. Diese Datei enthält eine Liste von Passwörtern, die möglicherweise für andere Benutzer auf dem System verwendet werden können.
Es wird versucht, eine Liste aller Benutzer zu erhalten, die die Bash-Shell verwenden.
Es wird nun mit den gefundenen Passwörtern versucht, sich als anderer Benutzer anzumelden.
Fantastisch! Der Brute-Force-Angriff war erfolgreich und es wurde ein neuer Benutzer gefunden: `fredf:B4-Tru3-001`.
Es wird versucht, sich als `fredf` anzumelden.
Die Anmeldung als `fredf` war erfolgreich.
Nach der Anmeldung wird geprüft, welche `sudo`-Rechte der Benutzer `fredf` hat.
Der Benutzer `fredf` darf das Programm `/opt/devstuff/dist/test/test` als `root` ausführen. Dies ist eine potenzielle Möglichkeit zur Privilege Escalation.
Es wird versucht, das Programm `/opt/devstuff/dist/test/test` auszuführen, um weitere Informationen zu erhalten.
Das Programm benötigt zwei Argumente: `read` und `append`.
Es wird versucht, die `/etc/shadow`-Datei mit dem Programm `/opt/devstuff/dist/test/test` zu lesen.
Der Benutzer `fredf` darf das Programm `/usr/bin/python test.py read /etc/shadow` nicht als `root` ausführen.
Es wird nach dem Speicherort der `test.py`-Datei gesucht.
Die `test.py`-Datei befindet sich unter `/opt/devstuff/test.py`.
Der Inhalt der `test.py`-Datei wird angezeigt.
Die `test.py`-Datei liest den Inhalt der ersten Datei und schreibt ihn an das Ende der zweiten Datei.
Es wird versucht, die `test.py`-Datei auszuführen, um die `/etc/shadow`-Datei zu lesen.
Der Benutzer hat keine Berechtigung, die `test.py`-Datei auszuführen.
Es wird versucht, die `test.py`-Datei mit `sudo` auszuführen, um die `/etc/shadow`-Datei zu lesen.
Der Benutzer `fredf` darf die `test.py`-Datei nicht mit `sudo` ausführen.
Da die oben genannten angriffe alle fehlschlugen, wurde der Box neuen Speicher zugewiesen, damit der Hack funktioniert.
Dieser Abschnitt demonstriert, wie die Schwachstelle in `/opt/devstuff/dist/test/test` ausgenutzt werden kann, um Root-Rechte zu erlangen.
Das Ziel ist, einen neuen Benutzer mit Root-Rechten hinzuzufügen, indem die `/etc/passwd`-Datei manipuliert wird.
Voraussetzung ist, dass der Benutzer `fredf` das Programm `/opt/devstuff/dist/test/test` als Root ausführen darf.
Es wird sich erneut als Benutzer fredf angemeldet, da die Sitzung abgelaufen ist
Es wird sich nun als Benutzer fredf angemeldet
Es wird in das /tmp Verzeichnis gewechselt.
Es wird eine neue Datei adddd erstellt.
Es wird die Datei adddd mit Nano geöffnet.
Der Inhalt der Datei wird ausgegeben, es wird ein neuer Benutzer erstellt
Es wird nun der neue Benutzer über den bekannten Exploit in die /etc/passwd hinzugefügt.
Über den Befehl grep wird geprüft ob der neue Benutzer hinzugefügt worden ist.
Es wird nun versucht sich als den neuen Benutzer anzumelden.
Das Passwort wird abgefragt, nun muss das zuvor festgelegte Passwort eingegeben werden.
Es wird über den Befehl id geprüft mit welchen Rechten man angemeldet ist.
Da die uid und gid 0 sind, sind wir jetzt als `root` angemeldet. Fantastisch! Der Root-Zugriff war erfolgreich. Nun haben wir unser Ziel erreicht.
Nachdem der Benutzer `benhacker` mit Root-Rechten hinzugefügt wurde, ist die Privilege Escalation abgeschlossen.
███╗ ██╗██╗ ██████╗███████╗ ██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗██╗██╗██╗ ████╗ ██║██║██╔════╝██╔════╝ ██║ ██║██╔═══██╗██╔══██╗██║ ████║██║██║ ██╔██╗ ██║██║██║ █████╗ ██║ █╗ ██║██║ ██║███████████ ██║██║██║ ██║╚██╗██║██║██║ ██╔══╝ ██║███╗██║██║ ██║██╔══██╗██╔═██╗ ╚═╝╚═╝╚═╝ ██║ ╚████║██║╚██████╗███████╗ ╚███╔███╚████████║ ██║██║ ██╗██╗██╗██╗ ╚═╝ ╚═══╝╚═╝ ╚═════╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝╚═╝ ╚═╝ ╚═══╝╚═╝ ╚═════╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝
Der Inhalt der `theflag.txt`-Datei wird angezeigt, was den erfolgreichen Root-Zugriff bestätigt.